/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package Facade;

import Objetos.Cliente;
import Objetos.Compra;
import Objetos.CondicaoePagamento;
import Objetos.Conta;
import Objetos.Dia;
import Objetos.Fornecedor;
import Objetos.Funcionario;
import Objetos.Meta;
import Objetos.Movimentacao;
import Objetos.OS;
import Objetos.Os_funcionarioServico;
import Objetos.Parcela;
import Objetos.Produto;
import Objetos.Produto_OS;
import Objetos.Usuario;
import Objetos.Veiculo;
import Objetos.Veiculo_OS;
import Persistencia.RepositorioCliente;
import Persistencia.RepositorioCompra;
import Persistencia.RepositorioCondPag;
import Persistencia.RepositorioConta;
import Persistencia.RepositorioDia;
import Persistencia.RepositorioFornecedor;
import Persistencia.RepositorioFuncionario;
import Persistencia.RepositorioLicenca;
import Persistencia.RepositorioMeta;
import Persistencia.RepositorioMovimentacao;
import Persistencia.RepositorioOS;
import Persistencia.RepositorioParcela;
import Persistencia.RepositorioProduto;
import Persistencia.RepositorioRelatorio;
import Persistencia.RepositorioUsuario;
import Persistencia.RepositorioVeiculo;
import java.util.Vector;
import javax.swing.JTable;



/**
 *
 * @author celiobj
 */
public class Facade {
    
    RepositorioCliente rcli;
    RepositorioCompra rcom;
    RepositorioCondPag rcond;
    RepositorioConta rcont;
    RepositorioDia rdia;
    RepositorioFornecedor rforn;
    RepositorioFuncionario rfunc;
    RepositorioLicenca rlic;
    RepositorioMovimentacao rmov;
    RepositorioOS ros;
    RepositorioParcela rparc;
    RepositorioProduto rprod;
    RepositorioRelatorio rrel;
    RepositorioUsuario rusu;
    RepositorioVeiculo rvei;
    RepositorioMeta rmet;
    
        
   
  
    //=================Cliente=======================
    public void adicionar_Cliente(Cliente cli, Usuario usu){
        rcli = new RepositorioCliente();
        rcli.adicionar(cli, usu);
    }

    public Cliente verificarExistente_Cliente(String nome, Usuario usu){
        rcli = new RepositorioCliente();
        return rcli.verificarExistente(nome,usu);
        
    }

    public void alterar_Cliente(String cod, Cliente cli, Usuario usu){
        rcli = new RepositorioCliente();
        rcli.alterar(cod, cli, usu);
    }

    public Cliente procurar_Cliente(String cod, Usuario usu){
        rcli = new RepositorioCliente();
        return rcli.procurar(cod,usu);
        
    }

    public Cliente procurarPeloNumCadastro_Cliente(String numCadastro, Usuario usu){
        rcli = new RepositorioCliente();
        return rcli.procurarPeloNumCadastro(numCadastro,usu);
    
    }

    public Cliente procurarNome_Cliente(String nome, Usuario usu){
        rcli = new RepositorioCliente();
        return rcli.procurarNome(nome,usu);
       
    }

    public JTable listarClientes_Cliente(String ref, Usuario usu){
        rcli = new RepositorioCliente();
        return rcli.listarClientes(ref,usu);
        
    }

    public JTable listarTodos_Cliente(Usuario usu){
        rcli = new RepositorioCliente();
        return rcli.listarTodos(usu);
        
    }
    
     //=================Compra=======================
     public void inserir_Compra(Compra compra, Usuario usu){
         rcom = new RepositorioCompra();
         rcom.inserir(compra,usu);
     }

     public String pegarUltima_Compra(Usuario usu){
        rcom = new RepositorioCompra();
        return rcom.pegarUltima(usu);    
         
     }
     //=================CondPag=======================
     
     public void adicionar_CondicaoePagamento(CondicaoePagamento cond, Usuario usu){
         rcond = new RepositorioCondPag();
         rcond.adicionar(cond, usu);
     }

     public void alterar_CondicaoePagamento(CondicaoePagamento produto, CondicaoePagamento alterado, Usuario usu){
         rcond = new RepositorioCondPag();
         rcond.alterar(alterado, alterado, usu);
     }

     public JTable consultaTodos_CondicaoePagamento(Usuario usu){
         rcond = new RepositorioCondPag();
         return rcond.consultaTodos(usu);
         
     }

     public CondicaoePagamento procurar_CondicaoePagamento(String cod, Usuario usu){
         rcond = new RepositorioCondPag();
         return rcond.procurar(cod,usu);
         
     }

     public Vector<CondicaoePagamento> todas_CondicaoePagamento(Usuario usu){
         rcond = new RepositorioCondPag();
         return rcond.todas(usu);
         
         
     }
     
     //=================Conta=======================
     
     public void adicionar_Conta(Conta conta, Usuario usu){
         rcont = new RepositorioConta();
         rcont.adicionar(conta, usu);
         
      }
     public JTable consultarTodosReceber_Conta(Usuario usu){
         rcont = new RepositorioConta();
         return rcont.consultarTodosReceber(usu);
        
         
     }

     public JTable consultarTodosPagar_Conta(Usuario usu){
         rcont = new RepositorioConta();
         return rcont.consultarTodosPagar(usu);
         
         
     }

     public String somarDia_Conta(String dia, String mes, String ano, String tipo, Usuario usu){
         rcont = new RepositorioConta();
         return rcont.somarDia(dia, mes, ano, tipo,usu);
         
     }

     public void baixarConta_Conta(String codConta, Usuario usu){
         rcont = new RepositorioConta();
         rcont.baixarConta(codConta,usu);
     }
     //=================Dia=======================
     public void abrirDia_Dia(Dia dia, Usuario usu){
         rdia = new RepositorioDia();
         rdia.abrirDia(dia,usu);
     }

     public void fecharDia_Dia(Dia dia, Usuario usu){
         rdia = new RepositorioDia();
         rdia.fecharDia(dia,usu);
     }

     public Dia verificarUltimoDia_Dia(Usuario usu){
         rdia = new RepositorioDia();
         return rdia.verificarUltimoDia(usu);
         
         
     }

     public String pegarSaldoAnterior_Dia(Usuario usu){
         rdia = new RepositorioDia();
         return rdia.pegarSaldoAnterior(usu);
         
     }

     public String pegarSaldoDia_Dia(String dia, String mes, String ano, Usuario usu){
         rdia = new RepositorioDia();
         return rdia.pegarSaldoDia(dia, mes, ano,usu);
         
     }

     public void alterarSaldo_Dia(Dia dia, Usuario usu){
         rdia = new RepositorioDia();
         rdia.alterarSaldo(dia,usu);
         
     }

     public void reabrirDia_Dia(Dia dia, Usuario usu){
         rdia = new RepositorioDia();
         rdia.reabrirDia(dia,usu);
         
     }

     public JTable consultarTodos_Dia(Usuario usu){
         rdia = new RepositorioDia();
         return rdia.consultarTodos(usu);
         
         
     }
     //=================Fornecedor=======================
     
     public void adicionar_Fornecedor(Fornecedor forn, Usuario usu){
         rforn = new RepositorioFornecedor();
         rforn.adicionar(forn, usu);
         
     }

     public void alterar_Fornecedor(Fornecedor novo, Fornecedor antigo, Usuario usu){
         rforn = new RepositorioFornecedor();
         rforn.alterar(novo, antigo, usu);
         
     }

     public JTable consultaTodos_Fornecedor(Usuario usu){
         rforn = new RepositorioFornecedor();
         return rforn.consultaTodos(usu);
         
         
     }

     public Vector<Fornecedor> todos_Fornecedor(Usuario usu){
         rforn = new RepositorioFornecedor();
         return rforn.todos(usu);
         
     }

     public Fornecedor procurar_Fornecedor(String cod, Usuario usu){
         rforn = new RepositorioFornecedor();
         return rforn.procurar(cod,usu);
         
     }

     public Vector listarTipos_Fornecedor(Usuario usu){
         rforn = new RepositorioFornecedor();
         return rforn.listarTipos(usu);
         
     }

     public JTable listarPorTipo_Fornecedor(String cod, Usuario usu){
         rforn = new RepositorioFornecedor();
         return rforn.listarPorTipo(cod,usu);
         
     }
     
     //=================Funcionario=======================
     
     public void inserirFuncionario_Funcionario(Funcionario funcionario, Usuario usu){
         rfunc = new RepositorioFuncionario();
         rfunc.inserirFuncionario(funcionario, usu);
         
     }

    public void alterarFuncionario_Funcionario(Funcionario antes, Funcionario depois, Usuario usu){
        rfunc = new RepositorioFuncionario();
        rfunc.alterarFuncionario(antes, depois,usu);
        
    }

    public Funcionario procurarFuncionario_Funcionario(String cod_funcionario, Usuario usu){
        rfunc = new RepositorioFuncionario();
        return rfunc.procurarFuncionario(cod_funcionario,usu);
        
    }

    public Funcionario procurarPeloNome_Funcionario(String nome, Usuario usu){
        rfunc = new RepositorioFuncionario();
        return rfunc.procurarPeloNome(nome,usu);
        
    }

    public JTable listarTodos_Funcionario(Usuario usu){
        rfunc = new RepositorioFuncionario();
        return rfunc.listarTodos(usu);
        
    }

    public Vector<String> ArraydeFuncionarios_Funcionario(Usuario usu){
        rfunc = new RepositorioFuncionario();
        return rfunc.ArraydeFuncionarios(usu);
        
    }
     
     //=================Licenca=======================
    
    public void bloquear_Licenca(String cod, Usuario usu){
        rlic = new RepositorioLicenca();
        rlic.bloquear(cod,usu);
        
    }

    public void liberar_Licenca(String cod, Usuario usu){
        rlic = new RepositorioLicenca();
        rlic.liberar(cod,usu);
        
    }

    public void inserir_Licenca(Usuario usu){
        rlic = new RepositorioLicenca();
        rlic.inserir(usu);
        
    }

    public int pegarCodLicenca_Licenca(Usuario usu){
        rlic = new RepositorioLicenca();
        return rlic.pegarCodLicenca(usu);
        
    }

    public int pegarStatusLicenca_Licenca(String cod, Usuario usu){
        rlic = new RepositorioLicenca();
        return rlic.pegarStatusLicenca(cod,usu);
        
    }
    
     //=================Movimentacao=======================
    
    public void inserir_Movimentacao(Movimentacao mov, Usuario usu){
        rmov = new RepositorioMovimentacao();
        rmov.inserir(mov,usu);
        
    }

    public Vector<Movimentacao> preencherAberto_Movimentacao(Dia dia, Usuario usu){
        rmov = new RepositorioMovimentacao();
        return rmov.preencherAberto(dia,usu);
        
    }

    public JTable listarPorDia_Movimentacao(String dia, Usuario usu){
        rmov = new RepositorioMovimentacao();
        return rmov.listarPorDia(dia,usu);
        
    }
    
     //=================OS=======================
    
     public void adicionar_OS(OS orcamento, Usuario usu){
         ros = new RepositorioOS();
         ros.adicionar(orcamento,usu);
         
     }

    public void encerrar_OS(String codOrcamento, Usuario usu){
        ros = new RepositorioOS();
        ros.encerrar(codOrcamento,usu);
        
    }

    public OS procurar_OS(String codOrcamento, Usuario usu){
        ros = new RepositorioOS();
        return ros.procurar(codOrcamento,usu);
        
    }

    public JTable listarTodosAbertos_OS(Usuario usu){
        ros = new RepositorioOS();
        return ros.listarTodosAbertos(usu);
        
    }

    public JTable listarAbertosPorData_OS(String dataInicio, String dataFim, Usuario usu){
        ros = new RepositorioOS();
        return ros.listarAbertosPorData(dataInicio, dataFim,usu);
        
    }

    public JTable listarFechadosPorData_OS(String dataInicio, String dataFim, Usuario usu){
        ros = new RepositorioOS();
        return ros.listarFechadosPorData(dataInicio, dataFim,usu);
        
    }

    public void inserirServicosOS_OS(Os_funcionarioServico servicos, Usuario usu){
        ros = new RepositorioOS();
        ros.inserirServicosOS(servicos,usu);
        
    }

    public int pegarUltima_OS(Usuario usu){
        ros = new RepositorioOS();
        return ros.pegarUltima(usu);
        
    }

    public JTable filtrarServicosOS_OS(String codOs, Usuario usu){
        ros = new RepositorioOS();
        return ros.filtrarServicosOS(codOs,usu);
        
    }

    public double somarPedidos_OS(String inicio, String fim, Usuario usu){
        ros = new RepositorioOS();
        return ros.somarPedidos(inicio, fim,usu);
        
    }
    
    public JTable calcularGastosPorPeríodo_OS(String inicio, String fim, Usuario usu){
        ros = new RepositorioOS();
        return ros.calcularGastosPorPeríodo(inicio, fim, usu);
    }
        
     //=================Parcela=======================
    
    public void inserirParcela_Parcela(Parcela parcela, Usuario usu){
        rparc = new RepositorioParcela();
        rparc.inserirParcela(parcela,usu);
    }

    public void cancelarParcela_Parcela(Parcela parcela, Usuario usu){
        rparc = new RepositorioParcela();
        rparc.cancelarParcela(parcela,usu);
        
    }

    public Parcela procurarParcela_Parcela(String cod_parcela, Usuario usu){
        rparc = new RepositorioParcela();
        return rparc.procurarParcela(cod_parcela,usu);
        
    }
    
     //=================Produto=======================
    
    public void adicionar_Produto(Produto produto, Usuario usu){
        rprod = new RepositorioProduto();
        rprod.adicionar(produto, usu);
    }

    public void alterarSaldo_Produto(Produto produto, int qtd, Usuario usu){
        rprod = new RepositorioProduto();
        rprod.alterarSaldo(produto, qtd,usu);
        
    }

    public void comprar_Produto(Produto produto, Compra compra, int qtd, Usuario usu){
        rprod = new RepositorioProduto();
        rprod.comprar(produto, compra, qtd,usu);
        
    }

    public void vender_Produto(Produto produto, int qtd, Usuario usu){
        rprod = new RepositorioProduto();
        rprod.vender(produto, qtd,usu);
        
    }

    public void alterar_Produto(Produto produto, Produto alterado, Usuario usu){
        rprod = new RepositorioProduto();
        rprod.alterar(produto, alterado, usu);
        
    }

    public JTable consultaTodos_Produto(Usuario usu){
        rprod = new RepositorioProduto();
        return rprod.consultaTodos(usu);
        
    }

    public Produto procurar_Produto(String codProduto, Usuario usu){
        rprod = new RepositorioProduto();
        return rprod.procurar(codProduto,usu);
        
    }

    public Vector<Produto> todos_Produto(Usuario usu){
        rprod = new RepositorioProduto();
        return rprod.todos(usu);
        
    }

    public void inserirProduto_OS_Produto(Produto_OS proOS, Usuario usu){
        rprod = new RepositorioProduto();
        rprod.inserirProduto_OS(proOS,usu);
        
    }
    
     //=================Relatorio=======================
    
    public void OsPorPeriodo_Relatorio(String inicio, String fim, Usuario usu){
        rrel = new RepositorioRelatorio();
        rrel.OsPorPeriodo(inicio, fim,usu);
        
    }

    public void fluxoCaixa_Relatorio(String data, String saldoPositivo, String saldoNegativo, Usuario usu){
        rrel = new RepositorioRelatorio();
        rrel.fluxoCaixa(data, saldoPositivo, saldoNegativo,usu);
                
    }

    public void imprimirOSporOS_Relatorio(String idOS, Usuario usu){
        rrel = new RepositorioRelatorio();
        rrel.imprimirOSporOS(idOS,usu);
        
    }
    
     //=================Usuario=======================
    
    public void adcionar_Usuario(Usuario usu){
        rusu = new RepositorioUsuario();
        rusu.adcionar(usu);
        
    }

    public void alterar_Usuario(Usuario usu){
        rusu = new RepositorioUsuario();
        rusu.alterar(usu);
        
    }

    public Usuario procurar_Usuario(String nome){
        rusu = new RepositorioUsuario();
        return rusu.procurar(nome);
        
    }

    public String validar_Usuario(String nome, String senha){
        rusu = new RepositorioUsuario();
        return rusu.validar(nome, senha);
        
    }

    public void remover_Usuario(Usuario usu){
        rusu = new RepositorioUsuario();
        rusu.remover(usu);
        
    }

    public JTable consultarTodos_Usuario(){
        rusu = new RepositorioUsuario();
        return rusu.consultarTodos();
        
    }
    
     //=================Veiculo=======================
    
    public void adicionar_Veiculo(Veiculo ve, Usuario usu){
        rvei = new RepositorioVeiculo();
        rvei.adicionar(ve,usu);
        
    }

    public void inserirVeiculoOS_Veiculo(Veiculo_OS veos, Usuario usu){
        rvei = new RepositorioVeiculo();
        rvei.inserirVeiculoOS(veos,usu);
    }

    public Veiculo procurarPelaPlaca_Veiculo(String placa, Usuario usu){
        rvei = new RepositorioVeiculo();
        return rvei.procurarPelaPlaca(placa,usu);
        
    }

    public JTable consultaTodos_Veiculo(Usuario usu){
        rvei = new RepositorioVeiculo();
        return rvei.consultaTodos(usu);
        
    }
    //=================Metas=======================
    
     public void adicionar_Meta(Meta meta, Usuario usu){
        rmet = new RepositorioMeta();
        rmet.adicionar(meta, usu);
        
    }
      public void alterar_Meta(Meta antes, Meta depois,Usuario usu){
        rmet = new RepositorioMeta();
        rmet.alterar(antes, depois, usu);
    }
       public Meta procurarPeloMesAno_Meta(String mes, String ano, Usuario usu){
        rmet = new RepositorioMeta();
        return rmet.procurarPeloMesAno(mes, ano,usu);
    }
       
     public JTable procurarTodasdoAno_Meta(String ano, Usuario usu){
        rmet = new RepositorioMeta();
        return rmet.procurarTodasdoAno(ano, usu);
    }
    
}
    

